System and method for generating and maintaining software code

ABSTRACT

An Integrated Development Environment having numerous cooperating modules which together provide a system and method for generating and maintaining software, in particular, the software for data development and data manipulation languages. Among other modules, the Integrated Development Environment includes a document manager for use in transparently retrieving related software files. Retrieved software files can be modified using an editor. The editing process may be enhanced through the use of a visualizer that allows the program flow and/or the data flow of the software files to be displayed.

RELATED APPLICATION

This application is a continuation of U.S. application Ser. No.09/992,624, filed on Nov. 19, 2001, and further claims the benefit ofU.S. Provisional Application Ser. No. 60/270,950, filed on Feb. 23, 2001and U.S. Provisional Application Ser. No. 60/293,854, filed on May 25,2001.

BACKGROUND OF THE INVENTION

This invention relates generally to software maintenance and developmenttools and, more particularly, to an extensible, language independentsoftware development tool having a graphical user interface, i.e., a GUIIntegrated Development Environment.

The evolution of data manipulation and data management systems, such asSAS®, SPSS® and SQL®, and relational database management systems, suchas IBM® DB2 UDB® and the Oracle® RDBMS, has resulted in severalhigh-level software languages that are inconsistent and, in some cases,unstructured. Based on these inconsistencies and the unstructured natureof some of these languages, database management languages may bedifficult to use, edit and debug. Moreover, because of the lack of astandardized syntax among these programming languages, it has beendifficult for users of these languages to share code. This isparticularly the case with SAS®.

Since the advent of personal computers and the GUI Interfaces such asWindows® Interfaces, it has become increasingly necessary for businessesto develop or purchase customized software in order to support specificbusiness strategies or processes. This, in turn, has led to theimplementation of a variety of software development tools and IntegratedDevelopment Environments (“IDEs”). Generally, these software developmenttools assist users and programmers in editing, debugging and developingsoftware for specific programming languages. Software providers of datamanipulation languages or systems have, however, failed to provide asingle comprehensive software development tool capable of assistingusers in the editing, visualizing, debugging and development ofsoftware. Furthermore, the creation of graphical development tools forparticular programming languages, such as, SAS®, has been inhibited bythe intricacies of the programming language itself.

Over the years, point solutions have been introduced to address specificissues. For example, there are a few GUI based ftp software packages tomake the job of transferring and managing code easier. There are also afew GUI based editor software packages to make editing code easier.Still further, there are software packages that one can use to manuallydiagram program flow and data flow. What is lacking, however, is asoftware package that integrates these best of breed point solutions andintegrates them in such a way that they work seamlessly with each other,e.g., to have an editor that is integrated with a ftp package so thatthe editor can edit files that are located in a remote server or to havethe editor integrated with the diagramming package so the user does nothave to manually generate and update program flow or data flow diagrams.

Thus, a need exists for an Integrated Development Environment forgenerating and maintaining software code, in particular, for datamanipulation centric languages. More specifically, a need exists for asystem and method for exchanging, editing, debugging, visualizing anddeveloping SAS®, SPSS®, SQL®, DB2 UDB®, Oracle® RDBMS and otherrelational database management system software.

SUMMARY OF THE INVENTION

In accordance with these needs, the present invention is embodied in anIntegrated Development Environment for generating and maintaining sourcecode (software programmed in a software language), in particular,programmed in data manipulation languages. Generally, the system inwhich the Integrated Development Environment resides includes a localcomputer capable of exchanging files with a remote computer via anetwork system, i.e., a Local Area Network, a Wide Area Network, or theInternet. The local computer preferably hosts the Integrated DevelopersEnvironment which is further comprised of a document manager fortransferring files and otherwise providing enhanced file managementfunctions, such as, version synchronization across multiple platforms.The document manager works in connection with a server module, a sitemanager and a connectivity layer which is part of the IntegratedDevelopment Environment to connect to remote computers, to transparentlyexchange files with the remote computer and to manage server profilesand connection information that is related to remote computers andtransferred files.

Once a file is transferred to the local computer, an editor, which isincluded as part of and integrated with the Integrated DevelopmentEnvironment, can modify the code associated with the file. In addition,the editor is also capable of creating new files and provides manyadvanced editing features such as visual execution break points,standardized formatting of files, and line numbering to name a few. Avisualizer, i.e., a software tools that reads the code and generatesdiagrams and graphical representation of the program flow, data flow orthe logic of the code, is also integrated and included as part of theIntegrated Development Environment. Program flow diagrams are comprisedof program block icons and arrows to depict the code's program flow.Data flow diagrams are comprised of icons depicting data processingsteps and arrows to depict the flow of the data through the program.Preferably, the visualizer and editor are integrated so that changesmade to the code in the editor are immediately reflected in thevisualizer and vice-versa. The visualizer can also read information fromexecution logs and execution outputs to display the execution path forselected code and automatically display insightful debugging andoptimization information for the selected code to the user.

To assist in developing new code or editing existing code, theIntegrated Development Environment further includes a template managerthat allows the user to browse through a repository of existing code ortemplates and to copy templates into the selected code for editing.

For allowing the editor to process code that is written in differentData Manipulation System programming languages and for creating theprogram flow icons, the Integrated Development Environment additionallyincludes a parser layer. The parser layer detects the type of code inthe selected file and activates the rules and logic that apply to thecorresponding Data Manipulation System programming language.

As will become apparent from the detailed description that follows, thesubject Integrated Development Environment provides, among others, thefollowing unique functions: seamlessly exchanging with and executingfiles on local and remote computers, where the site manager is capableof compiling connection information for remote computers necessary toachieve the seamless transfer and execution of files; automaticallygenerating program flow and data flow diagrams, where the program flowand data flow diagrams can be viewed at various levels of abstractionand where the user is capable of utilizing a step-wise function tocollapse or expand the levels of abstraction to view; and automaticallyparsing the execution log to automatically match errors and warnings inthe log file to the appropriate corresponding lines of code in theprogram file in order to ease the ability to correct the error, tovisually highlight problematic areas, and to generate user customizableerror messages and debugging advice for such problematic areas.

A better understanding of these and other objects, advantages, features,properties and relationships of the invention will be obtained from thefollowing detailed description and accompanying drawings which set forthan illustrative embodiment and which are indicative of the various waysin which the principles of the invention may be employed.

BRIEF DESCRIPTION OF DRAWINGS

For a better understanding of the invention, reference may be had to apreferred embodiment shown in the following drawings in which:

FIG. 1 is a diagram illustrating an exemplary computer network forgenerating, maintaining and executing computer code;

FIG. 2 is a diagram illustrating exemplary components of the localcomputer;

FIG. 3 is an exemplary screen shot depicting a graphical user interfacedisplaying a Menu bar, a Tool bar, a Display area (in this case theEditor) and a Navigation bar;

FIG. 4 a-f are exemplary screen shots and corresponding tables depictingicons that are representative of menu items included on the Menu bar,along with the name of each menu item and a functional description ofpertinent menu items;

FIG. 5 is a diagram illustrating the tool bar and a corresponding tabledescribing the pertinent functions associated with the buttons includedon the Tool bar;

FIG. 6 is an exemplary screen shot depicting an Editor window in FullScreen mode, along with corresponding output and log file tabs;

FIG. 7 is an exemplary screen shot depicting a tree view, along with thecorresponding code segments;

FIG. 8 is an exemplary screen shot depicting a template manager windowwith available templates;

FIG. 9 is an exemplary screen shot depicting a program flow for aselected file, along with arrows that indicate the flow of data withinthe program flow;

FIG. 10 is an exemplary screen shot depicting a server module windowconfigured for automated login and including session tabs for Server Aand Server B;

FIG. 11 is an exemplary screen shot depicting a site manager window;

FIG. 12 is an exemplary screen shot depicting a document manager window;

FIG. 13 is an exemplary screen shot depicting a search panel forlocating files;

FIG. 14 a is an exemplary screen shot depicting an Enhanced EditorOptions window;

FIG. 14 b is an exemplary screen shot depicting a Color tab window forcustomizing the font colors associated with the code displayed by theEditor;

FIG. 14 c is an exemplary screen shot depicting a General tab window forconfiguring the usage of an external editor in-lieu of the built-ineditor, enabling and disabling line numbering for the code displayed bythe Editor, and selecting print options;

FIG. 14 d is an exemplary screen shot depicting an ExecutionConfiguration tab for configuring the execution mode and executionlocation for selected files;

FIG. 15 is an exemplary screen shot depicting the template window as itis displaying available web-based templates to the user;

FIG. 16 is an exemplary screen shot of a web-based template that isalready configured;

FIG. 17 is an exemplary screen shot depicting a data flow for a selectedfile;

FIG. 18 a-c are a series of exemplary screen shots depicting operationof a step-wise function and various data flows as the data flows arebeing collapsed;

FIG. 19 is an exemplary screen shot depicting the visualizer employingthe Split Screen view;

FIG. 20 is an exemplary screen shot depicting the visualizer with aproblematic code section and a corresponding program flow icon beingdisplayed in red;

FIG. 20 a is an exemplary screen shot depicting the visualizer with aproblematic code section and a corresponding error log for that codesection;

FIG. 20 b is an exemplary screen shot depicting a debugging hintassociated with a problematic code section;

FIG. 20 c is an exemplary screen shot depicting an error message and acorresponding debugging hint being provided by the message manager;

FIG. 21 depicts a predefined class structure for recognizing anddisplaying tokens, which is employed by a file parser to parse aselected file; and

FIG. 22 depicts an exemplary file that has been parsed and thecorresponding class structure of the parsed file.

DETAILED DESCRIPTION

Turning now to the Figures, wherein like reference numerals refer tolike elements, there is illustrated an Integrated DevelopmentEnvironment having numerous cooperating modules which together provide asystem and method for generating and maintaining software, inparticular, the software for data development and data manipulationlanguages. Although not required, the system and method will bedescribed in the general context of a computer network 20, illustratedin FIG. 1, and computer executable instructions being executed bygeneral purpose computing devices within the computer network 20. Inthis regard, the general purpose computing devices may comprise one ormore remote computers 22 a, and one or more local computers 22 b,hosting an integrated software application 30. The computer network 20can also include one or more databases 24. It should be appreciated thatthe network components could be described as having client and serverrelationships, as generally known in the art.

To allow the local computers 22 b to generate and maintain code writtenin various programming languages, the integrated software application 30will reside on the local computer 22 b. Further, as shown in FIG. 2, itis preferable that the integrated software application 30 execute on aJava Virtual Machine (“JVM”) which acts as an interface between theintegrated software application and the operating system for the localcomputer 22 b. Although the operating system for the local computer 22 bis preferably Windows® based, it should be understood that the localcomputer 22 b could employ any one of the currently existing operatingsystems, such as LINUX®, UNIX®, MAC OS®, etc.

For editing, generating and maintaining software (i.e., program code),the local computers 22 b include a graphical user interface 40. As shownin FIG. 3, the graphical user interface 40 is further comprised of amenu bar 42, a tool bar 44, a display area 46 and a navigation bar 48.FIG. 4 a-4 e shows exemplary drop-down menu items included on the menubar, along with a brief description of the functionality associated withthose options. FIG. 4 f shows the “Right-Click” menu. The tool bar 44 isfurther comprised of and displays several buttons, including a templatemanager button 44 a, which serves as a link to a template manager 100.In addition, FIG. 5 shows exemplary buttons included on the tool bar 44,along with a brief description of the functionality associated withthose buttons. The navigation bar 48 is further comprised of anddisplays a document manager button 48 a, a site manager button 48 b, aneditor button 48 c, a visualizer button 48 d, a database manager button48 f, and a server button 48 e, which serve as links to modulescorresponding with these respective buttons, i.e., a document manager60, a site manager 70, an editor 80, a visualizer 120, a databasemanager 121, and a server module 160, each of which will be described ingreater detail below.

As will be appreciated by those of skill in the art, the computers 22 a,22 b need not be limited to personal computers, but may includehand-held devices, multiprocessor systems, microprocessor-based orprogrammable consumer electronics, minicomputers, mainframe computers,personal digital assistants, cellular telephones or the like dependingupon their intended end use within the system. For performing theprocedures described hereinafter, the computer executable instructionsmay be written as routines, programs, objects, components, and/or datastructures that perform particular tasks. Within the computer network20, the computer executable instructions may reside on a single computer22 a, 22 b or the tasks performed by the computer executableinstructions may be distributed among a plurality of the computers 22 a,22 b. Therefore, while described in the context of a computer network,it should also be understood that the present invention may be embodiedin a stand-alone, general purpose computing device that need not beconnected to a network.

To perform the particular tasks in accordance with the computerexecutable instructions, the computers 22 a, 22 b may include, asneeded, a video adapter, a processing unit, a system memory, and asystem bus that couples the system memory to the processing unit. Thevideo adapter allows the computers 22 a, 22 b to support a display, suchas a cathode ray tube (“CRT”), a liquid crystal display (“LCD”), a flatscreen monitor, a touch screen monitor or similar means for displayingtextual and graphical data to a user. The display allows a user to viewinformation, such as, code, file directories, error logs, execution logsand graphical user interface tools.

The computers 22 a, 22 b may further include read only memory (ROM), ahard disk drive for reading from and writing to a hard disk, a magneticdisk drive for reading from and writing to a magnetic disk, and/or anoptical disk drive for reading from and writing to a removable opticaldisk. The hard disk drive, magnetic disk drive, and optical disk drivemay be connected to the system bus by a hard disk drive interface, amagnetic disk drive interface, and an optical disk drive interface,respectively. The drives and their associated computer-readable mediaprovide a means of non-volatile storage for the computer executableinstructions and any other data structures, program modules, databases,etc. utilized during the operation of the computers 22 a, 22 b.

To connect the computers 22 a, 22 b within the computer network 20, thecomputers 22 a, 22 b may include a network interface or adapter. Whenused in a wide area network, such as the Internet, the computers 22 a,22 b typically include a modem or similar device. The modem, which maybe internal or external, is connected to the system bus via a serialport interface. It will be appreciated that the described networkconnections are exemplary and that other means of establishing acommunications link between the computers 22 a, 22 b may be used. Forexample, the system may also include a wireless access interface thatreceives and transmits information via a wireless communications medium,such as a cellular communications network, a satellite communicationsnetwork, or another similar type of wireless network. It should also beappreciated that the network interface will be capable of employingTCP/IP, FTP, SFTP, Telnet SSH, HTTP, SHTTP, RSH, REXEC, etc. and othernetwork connectivity protocols.

For seamlessly transferring files, the document manager 60 is utilized.The document manager 60 is a file management program that performs manyenhanced file management functions, such as recognizing related files,(e.g., execution log files, output files, include files, etc.) andmanaging related files as a unit, regardless of the location of suchfiles. For example, if the user causes the document manager 60 totransfer a file from the remote computer 22 a to the local computer 22b, the document manager 60 may also determine whether any related filesexist, i.e., files that are or will be used in conjunction with the filethat the user is transferring, and transfer those files as well. As willbe described in further detail below, these enhanced file managementfunctions, including managing related files and storing information,such as origination and timestamp information about these files, allowthe user to exchange files with and execute code on local computers 22 band/or remote computers 22 a. To accomplish the enhanced file managementfunctions, the document manager 60 may also include an intelligentmodule 62, a security layer 66 and a file transfer program 68.

The intelligent module 62 enables the document manager 60 to trackpertinent file transfer information 64 that enable the performance ofenhanced file management functions, including, uploading files from asource computer and returning/downloading an edited version of the samefile to the same source computer for storage, execution, etc. Toaccomplish the functions of returning edited files to the sourcecomputer and executing edited files remotely, the file transferinformation 64 may include a source computer identifier, a filedirectory identifier, a content identifier, a timestamp or otherinformation capable of allowing the tracking of the type or path offiles that are transferred between computers 22 a, 22 b or within asingle computer 22 b.

To ensure that the integrity and security of the network 20 ismaintained, a security layer 66 is utilized. The security layer 66,which is part of the site manager 70, may save server login informationsupplied by the site manager 70 thereby allowing subsequent fileexchanges to be handled transparently. The security layer 66 may also becapable of configuring the integrated software application 30 to workwith firewalls. The site manager 70 gathers server login information andsimilar information for use by the document manager 60, the intelligentmodule 62 and the security layer 66, and interacts closely with each ofthese modules. Preferably, remote file access and file execution arehandled centrally through the site manager 70.

To maintain existing software and develop new software, the editor 80allows the user to perform standard text editing functions, including,mouse placement of the cursor, click-and-drag text selection andstandard Windows® key combinations for cutting, copying and pastingdata. While editing code that has been previously executed, theassociated log files and output files that are stored in the samedirectory 104 as the code will automatically be opened and each of thesefiles will include a corresponding tab 84 a, 84 b, as shown in FIG. 6.The user can access each of these files by clicking on the correspondingtab 84 a or 84 b and switch between several related files by clicking ondifferent tabs. The editor 80, the document manager 60 and the sitemanager 70 cooperate to track the association between edited code, thelog files and output files that are generated by the edited code, andthe remote system on which edited code may be executed. The editor 80may also employ language-specific syntax checking and auto-correctfunctions to enhance the software development capability of theintegrated software application 30.

To make the code more manageable and allow the user to see a moreabstract version of the code, the editor 80 also provides a means toinvoke a tree view 90, which may be displayed near the editor 80. Thetree view 90 depicts individual procedures and data blocks as activeelements 82 and shows the code at a high level. Since each activeelement 82 is representative of a larger code segment, as shown in FIG.7, the user can navigate throughout the code by selecting activeelements 82 and thereby displaying the larger code segment associatedwith the selected active element 82 (i.e., the editor will automaticallyscroll to the region where the code segment is visible). To make iteasier to cut, copy or move code segment, the user can right-click on anactive elements in the tree. This will cause the editor to automaticallyscroll to the region where the code segment is located and highlight theentire code segment. The user can then cut or copy the highlighted codesegment to the clipboard.

For enabling users to add pre-existing lines of code or templates 106 toa program being edited or created, the editor 80 also includes thetemplate manager 110, which may be accessible to the user by clicking onthe Template button on the tool bar 44 menu. As shown in FIG. 8, thetemplate manager window 102 includes a directory 104 of templates 106,which are both pre-built and written by the user and which may beexamined by navigating the directory 104 in a manner that is well-knownin the art. The template manager 110 allows the user to insert templates106 directly into the code that is being created/edited. In addition,the template manager 110 also allows the user to create and organizetheir own templates 106. Still further, the template manager 110 couldbe used in connection with the Internet and a web browser to view andretrieve templates stored at remote locations, such as web sites,bulletin boards, etc. The Template Manager 100 can store the templates(both built-in and those developed by the user) locally and/or centrallyon a remote server making it easy for the entire workgroup or enterpriseto share these templates.

In addition, the editor 80 may also provide an auto-complete functioncapable of automatically generating code based on templates 106 managedby the template manager 100. For example, as soon as a user keys in arecognized key word, the editor 80 will automatically perform a look-upfunction for that keyword in the directory 104. If a template 106includes a matching keyword, then the editor 80 may automatically pastethe template into the display area. If more than one template 106matches the keyword, then a pop-up window will be displayed presentingthe user with the option of selecting one of the matching templates. Itshould also be appreciated that the user customize the integratedsoftware application 30 by enabling or disabling the auto-completefeature.

For viewing the program flow and data flow of a selected program, aswill be further described below, the visualizer 120, in connection witha parser layer 140, reads, parses and displays the code for the selectedprogram, representing each program and data block with a program flowicon 126. As illustrated in FIG. 9, arrows connect these program flowicons 126 to generally illustrate the flow of data.

Assuming that the designated code segment has been executed previouslyand that the execution log is readily available, the user may also“mouse-over” the program flow icon to display the comments and executionstatistics, i.e., CPU usage, number of row processed, etc., associatedwith the block. Right-clicking on the program flow icon will activatespecific functions or options associated with the icon. For example, thedataset icon (i.e., an icon that represents a dataset or a table) willdisplay a list of data inspection or data discovery functions, includingad hoc SQL® queries. Ad hoc SQL® queries that are selected may beexecuted by the respective engine. These engines (e.g., SAS, DB2 UDB, orother RDBMS servers) can resides locally on the user's workstation orremotely on the LAN/WAN and the results, once retrieved will bedisplayed in a pop-up output window.

To access and interact with remote computers 22 a via command lines, theserver module 160 acts as a robust terminal emulator. The server module160 allows users to open one or more sessions thereby simultaneouslygaining access to one or more hosts/remote computers 22 a. In addition,the user has the option of executing edited code on a remote computer 22a, by employing the server module 160, in connection with the sitemanager 70, to connect the local computer 22 b to the remote computer 22a, as will be described in more detail below. Once a session is opened,a terminal tab for the respective session can be created and displayedto the user by the server module 160, as illustrated in FIG. 10. Itshould be understood by those with skill in the art that the servermodule 160, the site manager 70 and the document manager 60 allpreferably interact with one another to effectuate the transfer of codebetween the remote server computers 22 a and the local computer 22 b. Itshould also be understood that each of these modules could be combinedor further divided to form one single module or additional modules.

The site manager 70 assists the local computer 22 b with access to theremote computers 22 a. For example, the document manager 60 and theserver module 160 use the site manager 70 to collect the connectioninformation 78 necessary for the local computer 22 b to make a LAN/WANconnection to a remote computer 22 a using either FTP, SFTP, Telnet SSH,HTTP, SHTTP, RSH, REXEC and other TCP/IP connectivity protocols.Additionally, to avoid manually entering the connection information 78each time a different remote computer 22 a is accessed, the site manager70 is also capable of saving connection information 78 for differentservers. Thus, the site manager 70 creates a virtual computingenvironment by expanding the computing boundary of the local computer 22b to include remote computers 22 a and making various computingresources across the LAN/WAN seamlessly available for use by the localcomputer 22 b. As shown in FIG. 11, the site manager window 72 may bedivided into a first panel 74 and a second panel 76. The first panel 74displays a tree structure that depicts the system configuration 74 a foreach of the remote computers 22 a that are available to the localcomputer 22 b. The second panel 76 displays the connection information78 for a selected remote computer 22 a, including but not limited to thefollowing fields: Profile Name 78 a, Host Address 78 b, User 78 c,Password 78 d, FTP port 78 e and Telnet Port 78 f.

The site manager 70 also includes a PASV mode and Firewall option whichcan be selected by the user. PASV mode is supported as an option toallow file transfer programs (“FTPs”) to work with a firewall. Thisfeature reverses the connection between the remote computer 22 a and thelocal computer 22 b allowing many users whose sessions are hosted behindfirewalls to use the document manager 60. Therefore, PASV mode is usefulfor certain types of firewalls that do not allow FTP servers to initiatedata connections back to the connected client. If the Firewall option isselected, the firewall configuration parameters from the Firewall tab ofthe Option Dialog will be used to initiate a connection to this profile.Moreover, if the local computer 22 b resides behind a firewall thatlimits or restricts FTP access and the Firewall mode is selected, thenecessary connection information 78 and Firewall selections for thelocal computer 22 b must be entered, i.e., a host name, port number,user ID and password. In accordance with procedures that are generallyknown in the art, the Firewall Type box permits the user to select thecommand required by the firewall to initiate an FTP session from thesite manager 70. In addition to providing options that enhance thenetwork connectivity of the local computer 22 b, the Option button alsoprovides tools and wizards for automatically searching the LAN/WAN fordesignated resources. These tools and wizards simplify thenetwork/server connection setup between the local computer 22 b and theremote computers 22 a.

For parsing the code, the parser layer 140 is provided. The file parser142 retrieves code utilizing the services provided by the documentmanager 60 and examines the words/tokens which comprise the code 144.The file parser 142 also identifies and tags the tokens 144 to indicatethat they are one of a variety of token classes, such as, a keywordtoken, a newline token, a quotestring token, a macro token and a commenttoken. Since the integrated software application 30 is language aware,the parser layer 140 may accommodate varying language types. Thus,although the preferred embodiment of the present invention isspecifically designed to include modules for parsing SAS® and SQL code,it should be appreciated that the modules can be included for parsingand interpreting other language types, such as, SPSS®, DB2 UDB® StoreProcedures, ORACLE® PL/SQL, etc.

For managing and interacting with database files, a database manager 220may be provided which automatically interacts with the local ODBCregistry to display a list of ODBC resources. In addition, the databasemanager 220 may automatically search the LAN/WAN for RDBMS servers anddisplay the list of RDBMS servers that are found locally or remotely.The database manager also allows the user to select and drill down to adesired database and automatically connect to the selected database,unless a login screen is required to connect to the database. Onceconnected to the selected database, the Database Manager will display alist of tables which are stored and available in the database. The usercan then right-click on a particular table to gather statistics or toretrieve sample data from those tables. The user can also drill down ona particular table to display the columns of the tables. Similarly, theuser can click on a particular table to gather statistics (e.g.,frequency counts, min max, distinct value, average, etc.) or to retrievesample data from those tables. The user can also drag and drop tablesonto a work area to graphically generate SQL® statements to retrievedata from the database. Additional data manipulation functions, e.g.,pivot, crosstab, and templates will be available to help users inspect,transform, import, export, map, format, transport and derive new databased on existing data. The database manager 220 may also include a metadata manager 222 to help the user document the business or logicaldefinition of the data, and the technical or physical definition of thedata. The meta data manager 222 may also assist the user in tracking thelineage of the data, i.e., the source of the data, the changes to thedata that were made and the destination of the data.

To further exemplify the functionality of the integrated softwareapplication 30, the following section will discuss an exemplary softwaredevelopment session, along with the modules used to effectuate therespective functions.

This hypothetical session commences with activation of the integratesoftware application 30. Once the integrated software application 30 islaunched, the graphical user interface 40 will be displayed and the userwill have the opportunity to open modules in the navigation bar 48 orengage functions represented by buttons in the menu bar 42 or the toolbar 44. For determining to which computer the user desires access, theuser would begin by activating the site manager 70, which causes thesite manager window 72 to be displayed to the user. The site managerwindow 72 includes a first panel 74 and a second panel 76. As shown inFIG. 11, the first panel 74 of the site manager window 72 displays thedefined/available remote computers 22 a for the user's selection. Asdiscussed above, the second panel 76 of the site manager window 72displays a server profile for a selected remote computer 22 a,comprising connection information 78, including, but not limited to, thefollowing fields: Profile Name 78 a, Host Address 78 b, User, Password,FTP port 78 e and Telnet Port 78 f. As will be appreciated, the sitemanager can be configured to search the network for servers or certaintypes of servers and display the found servers for selection by theuser.

The server profiles 170 may be populated by selecting a folder icon 172to use as a parent directory 174. Once a parent directory 174 is opened,the user may click on the New button 176 to create a new server profile170. Therefore, it should also be understood that the site manager 70allows the user to create new server profiles 170 by entering thenecessary connection information 78. To edit an existing server profile170, the user must select a remote computer 22 a and click the Editbutton 178. After the Edit button 178 is selected, the cursor may bemoved to the Profile Name 78 a for editing or modification, or the usermay click on the Option button for Advance Network/Server ConnectivityConfiguration Settings.

The text displayed in the Profile Name 78 a field can be a profile name78 a that was selected in the first panel 74 of the site manager window72 or text the user enters in creating a profile for a remote computer22 a or host. The Host Address 78 b field may contain an IP address or aresolvable DNS host name of the FTP, SFTP, Telnet, SSH, REXEC, HTTP, orSHTTP server for the respective host definition. The User 78 c field maycontain the login name that the user will enter to access the remoteserver computer FTP account. If the selected remote computer 22 aaccepts anonymous FTP requests, “anonymous” may be entered in thisfield. The Password 78 d field may contain a password 78 d for theremote server computer FTP account, unless an anonymous login is used;then, the Password 78 d field may remain blank. The FTP port 78 e fieldis set by default to 21, since most server computers 22 a accept FTPconnection requests on port 21, however, the FTP Port 78 e field may bechanged as needed. The Telnet Port 78 f field is set by default to 23,since most server computers 22 a accept Telnet connection requests onport 23, however, the Telnet Port 78 f field may also be changed asneeded.

Once the user selects a remote computer 22 a to access, the connectioninformation 78 for the selected remote computer 22 a is returned by thesite manager 70 and displayed to the user. Then, the user is given theoption of connecting to the selected remote computer 22 a by selectingthe Connect Telnet button. When the Connect Telnet button is selected,the server module 160 is activated. To connect to the remote computer 22a, the server module 160 utilizes the connectivity layer 180. Morespecifically, as is known in the art, the connectivity layer 180utilizes the connection information 78 with TCP/IP and other similarnetworking protocols to interconnect with the remote computer 22 a. Oncethe server module 160 has made an initial connection with the selectedremote computer 22 a, a server module window 162 is displayed to theuser. The server module window 162 displays the name of the remotecomputer 22 a to which the user is trying to connect.

Prior to opening a session on a particular host, the user may berequired to login or the server module 160 may automatically log theuser on (depending on the settings that the user has selected in theserver profile 170, i.e., save login and password). FIG. 10 shows aserver module window 162 that is configured for automated login, with ahome path preset to the integrated software application's SAS®directory. The combination of the site manager 70, the server module 160and the connectivity layer 170, enable the user to seamlessly accessSAS® documents, log files and output files stored at the remote computer22 b.

Once the local computer 22 b accesses a remote computer 22 a using thecombination of the site manager 70, the server module 160 and theconnectivity layer 170, the document manager 60 will be activatedautomatically. Moreover, to view the available files for a selectedcomputer, the document manager window 170 may be displayed to the user.As shown in FIG. 12, the document manager window 170 includes a localpanel 172 and a remote panel 174. Each of these panels, 172, 174displays the available files for the respective computers 22 b, 22 a asa file tree structure, as shown in FIG. 12. The user may then select oneor more of the available files for editing or visualizing. In thepreferred embodiment of the present invention, files that are located inthe local panel 172 are resident on the local computer 22 b and filesthat are located in the remote panel 174 are resident on the remotecomputer 22 a, but it should be appreciated that such designations arefor explanatory purposes only and that other variations of networksystems and computer designations could be employed.

The document manager 60 also allows the local computer 22 b to performvarious Windows® commands, such as, creating new files, renaming,deleting and opening existing files, printing files, copying, cuttingand pasting information to the Windows® clipboard, and other standardcommands that are generally known in the art. In addition, the documentmanager 60 provides a Search Option 69. As shown in FIG. 13, selectingthe Search Option 69 opens the search option window 69 a and allowsusers to search any file system that is accessible to the localworkstation/local computer 22 b, in accordance with generally known filesearching techniques, including by exact or partial file name,modification date or date range, and content.

To open a file displayed in the local panel 172, the user maydouble-click on the selected file, or highlight the selected file andstart the desired module (i.e., the editor 80 or the visualizer 120). Ifthe user double-clicks on a file located in the local panel 172, theeditor 80 will automatically open and display the file. To open and edita file displayed in the remote panel 174, it is preferable that the userdrag a selected file from the remote panel 174 of the document manager60 and drop the selected file in the local panel 172 of the documentmanager 60. It should also be understood by those with skill in the artthat other methods for opening and moving files may be employed.

To retrieve a file that is stored on a remote computer 22 a, thedocument manager 60 may utilize a file transfer program 64, inconnection with the site manager 70 and the connectivity layer 180. Forexample, as is known in the art, the document manager 60 may send arequest to the file transfer program 64 to import the selected file froma particular remote computer 22 a. In response to this request, the filetransfer program 64 may communicate with the remote computer 22 a viathe connectivity layer 180 and instruct the remote computer 22 a to sendthe selected file to the local computer 22 b. When the selected file isbeing transferred from the remote computer 22 a to the local computer 22b, the intelligent module 62 of the document manager 60 may compile filetransfer information 64, as noted above. It should also be understoodthat, while it is preferred to have the intelligent module 62 compilefile transfer information 64, other similar modules may be equallycapable of accomplishing the task of compiling file transfer information64 for the system 20.

Again, for exemplary purposes only, it is assumed that the user haschosen to edit the code before visualizing it. As mentioned above, tobegin editing files, the user may either double-click on the selectedfile, which automatically opens the editor 80, or the user may highlightthe selected file and then open the editor 80. To open the editor 80,the user need only double-click on the Editor button 48 c located in thenavigation bar 48 of the graphical user interface 40, as shown in FIG.3.

As shown in FIG. 6, once the editor 80 begins the editing process (thedefault setting is Full Screen mode), the contents of a selected fileare returned from the document manager 60 and displayed to the userbeside a navigation bar 48 bar. For editing the code and implementingadvanced code-handling capabilities, the editor 80 also includesfeatures, such as, language-aware syntax highlighting, warning and errorlog file highlighting, automatic line numbering, automatic completion ofcode segment based on program templates, tree views of program blocksand code templates 106. By highlighting key code statements, thelanguage-aware syntax highlighting makes the code easier to read andedit. In addition, by highlighting the code, based on informationcontained within the warning and error log files, errors in the code aremore apparent and the code is easier to trouble-shoot.

To allow the user to customize, edit and maintain error messages and thecorresponding debugging hints, the message manager 88 is provided. Morespecifically, the message manager 88 allows the user to create, updateand delete error messages. For example, the user can click on any errormessage in the log and in response to this selection, the messagemanager 88 may compare the selected error message to an existingrepository of error messages The repository of error messages can bestored locally and/or centrally in a remote server accessible andsharable by the entire workgroup or the entire enterprise. If theselected error message matches one of the existing error messages, adebugging window will pop-up. The debugging window will display theoriginal error message, along with any corresponding debugging hintsthat are associated with the original error message as provided by themessage manager 88. If the selected error message does not match one ofthe existing error messages, the message manager 88 may automaticallyread the new message into the repository of error messages.Additionally, the user may have the option to associate debugging hintswith the new error message.

To further add to the utility of the editor 80, the user can open theEnhanced Editor Options window 84 by clicking the Editor Configurationbutton 86 in the Options pull-down menu. The Enhanced Editor Optionswindow 84 is further comprised of a General tab 84 a, a Font tab 84 b, aColor tab 84 c and an Execution tab 84 d. As is generally understood inthe art and as shown in FIG. 14 a, the font type, size and style of thecode may also be customized by the user by selecting the Font tab 84 bin the Enhanced Editor Option window 84. Additionally, as shown in FIG.14 b, the Color tab 84 c of the Enhanced Editor Options window 84 may beselected to allow the user to select the colors that are used inconnection with various syntactically significant language elements inthe SAS® program file, thereby allowing the user to customize thelanguage-aware syntax highlighting and warning and error log filehighlighting functions. To further configure the user workspace, theeditor 80 allows the user to choose whether or not to display linenumbers in connection with editing the code. For example, as shown inFIG. 14 c, the General tab 84 a can be selected by the user and mayprovide options for selecting a line numbering button representative ofdisabling or enabling the line numbering, specifying printing options orindicating the use of alternate editor. For allowing the integratedsoftware application 30 to configure the execution path for selectedfiles, the Execution tab 84 d can be selected by the user and theexecution mode and execution location may be defined (i.e., Locally orRemotely), as illustrated in FIG. 14 d. By configuring the executionpath for selected files, the user can execute the code on local orremote computers 22 b, 22 a or engines.

Once the selected code is displayed on the editor window 82, the usercan begin to edit the code. Although the default setting for the editorwindow 82 is the Full Screen mode, the user can also select a SplitScreen mode. The Split Screen mode splits the editor window 82 into twopanels, i.e., the tree view panel 82 a and the code view panel 82 b. Toenhance the ability of the user to navigate within the body of the code,the tree view panel 82 a displays the tree view 90, which is comprisedof a group of active elements 92. The tree view panel 82 a displays ahigh-level representation of the code and the code view panel 82 bdisplays the corresponding code that is associated with a highlightedactive element 92. To this end, the editor 80 works in connection withthe parser layer 140 to parse the code in a manner that allows theeditor 80 to display a tree view 90 comprised of active elements 92 thatare representative of code section that perform important functions,such as, the introduction of new variables or the execution of append,print or similar functions. Thus, the user can navigate through the codeby clicking on the desired active element 92, which causes the code thatcorresponds with that active element to be displayed in the code viewpanel 82 b.

The user can also add pre-existing code to the program being edited, byopening the template manager 100. The template manager 100 allows theuser to select existing templates 106 and to integrate the codeassociated with those templates 106 into the code by simply clicking onthe paste button or by utilizing standard cut and paste tools, orsimilar functions, as will be explained in greater detail below.

Once the template button 44 a is selected, the template manager 100 isactivated and the template manager window 101 is opened. It should beappreciated that the template manager 100 may be a separate browser;therefore, the template manager window 101 may remain open throughoutthe users session. The template manager window 101 may be furthercomprised of a template directory panel 101 a and a template code panel101 b. The template directory panel 101 a may display a directory 104 oftemplate folders 105 or available templates 106. To display the codeassociated with an available template 106, the user may select a filefolder containing available templates 106 from the directory 104 andselect an available template 106, which is located within the selectedfile folder. Once a template 106 is selected, the template code 106 aassociated with the template 106 is returned to the template manager 100and displayed in the template code panel 101 b.

To insert the template code 106 a associated with a selected template106 directly into the code that is being edited, the user may click theCopy button 102 on the template manager window 101; this places thetemplate code 106 a associated with the selected template 106 into theWindows® clipboard. Then, the user should place the cursor in thedesired location within the code and select the Paste button 103. Or theuser may simply click the paste button and the template will be copieddirectly into the current location of the cursor in the document.

The template manager 100 may also allow the user to create new templatefolders 105 for storing templates 106, to create new templates 106 andto edit existing templates 106. These templates can reside on either thelocal drive or the network drive. In addition, for allowing the templatemanager 100 to import additional templates 106 from remote computers 22a, the template manager 100 also enables the user to browse web-basedtemplates 108. As shown in FIG. 15, once the web-based templates 108 areaccessed and displayed on the template manager window 101, the web-basedtemplates 108 may be utilized in a manner similar to the templates 106.As shown in FIG. 16, additional web-based templates 108 may be added tothe template manager 100 by the user. It should also be understood thatthe templates 106 are web enabled, i.e., the user can associate links orURLs with the template during creation. Thus, users may be capable ofclicking on a link and causing the template manager 100 to automaticallyactivate a web browser to display any content associated with the link.

Once the user has completed the editing or development of the code, theuser can execute and debug the code. In addition, the code can beexecuted locally or remotely. As is known in the art, the user may alsouse the editor 80 to set break points 112 in the code. As shown in FIG.23, break points 112 can be set by selecting the line numbers thatcorrespond to the intended location of the break points 112. It shouldalso be appreciated that by setting break points 112 in the code, thecode can be executed in its entirety or as a block of code with theadditional option of skipping specified code segments within theselected blocks.

The site manager 70, the document manager 60 and the editor 80 work inconjunction with one another to execute the code. For example, the sitemanager 70 manages the connections between the local computer 22 b andthe remote host/remote computer 22 a; the document manager 60 tracks theassociations between the code, the log files and the output files thatare generated and the remote system on which the code is to be executed;and the editor 80 allows the user to modify the code. Moreover, forassisting users in developing and maintaining software, the editor 80and the visualizer 120 have an integrated relationship. For example,each of the active elements 92 displayed in the tree view 90 may also berepresented in the visualizer 120 and any changes made in the editor 80can be simultaneously reflected in the visualizer 120.

To execute code remotely when the code resides on a remote computer 22a, the code is first copied to a directory on the local computer 22 b.Next, the user should open the local copy of the code. After the localcopy is opened and returned to the editor 80, the code view panel 82 bwill display the code. The user can also use the document propertywizard to specify the server and the location in which they intend toexecute the code. The server or location may be selected by browsing theserver list in the site manager 70.

To execute code remotely when the code resides on a localworkstation/local computer 22 b, the user first instructs the sitemanager 70 to make a connection to the remote computer 22 a. Then, theuser may cause the document manager 60 to copy the code from the localcomputer 22 b to a directory 104 on the remote computer 22 a. To selectcode for execution, the user can drag an icon representing the selectedcode from the local panel 172 of the document manager 60 window and dropthe icon in the remote panel 174 of the document manager 60 window. Itshould also be appreciated that the selected code could be copied byother means that are generally known in the art. Next, the user shouldopen the local copy of the code. After the local copy is opened, theeditor window 82 will display the code.

To execute the code or code segments, the user selects the ExecuteProgram button 44 a on the tool bar 44 or in the Right-Click menu. Oncethe Execute Program button 44 a is selected, the server module 160connects to the proper computer 22 a, 22 b using the connectivity layer180 and causes the execution script, which may be defined in the sitemanager 70, to operate on the selected code. After execution of the codeis complete, a system prompt will be displayed. The user may then type“exit” to return to the editor 80 window; the document manager 60automatically transfers the session's .log an .1st files to the samedirectory 104 from which the code was copied and displays them asseparate tabs on the Editor 80 window. The user can also configure theremote execution function to that it will exit automatically.

As shown in FIGS. 9 and 17, the visualizer 120 may be used to show theprogram flow 122 or the data flow 124 of the selected code on thevisualizer window 121. Additionally, the user will be able to togglebetween the program flow display 122 a and the data flow display 124 aby selecting the View Program Flow button 122 b or View Data Flow button124 b, respectively. As shown in FIG. 9, the program flow 122 isdisplayed as a default and displays program flow icons 126, which aregraphical representations of code sections, in the order that they occurin the code.

For generating the program flow icons 126, a document view engine 200 isprovided. The document view engine 200 operates in conjunction with theparser layer 140 to parse the code. Using information provided by theparser layer 140, the document view engine can intelligently recognizeand arrange individual procedures and data blocks on the visualizerwindow 121 and represent the procedures and data blocks as program flowicons 126. The document view engine 200 may also allow users to assignmeaning and attributes to tokens 144, which are identified by the parserlayer 140. By assigning meanings and attributes to tokens 144, thedocument view engine 200 allows the visualizer to create program flows122 and data flows 124.

As shown in FIG. 17, the visualizer 120 may also show the data flow 124of the subject code. The data flow 124 is generated by parsing the code,tracing the flow of the data through the code and displaying individualprocesses and data blocks in separate columns with arrows that connectthe program flow icons 126 and indicate the direction of the data flow.In addition, as shown in FIG. 18, the data flow visualizer also allowsthe user to combine flows in a step-wise manner, thereby following theflow of the data from start to finish. As the user clicks the Step-wisebutton 121 a located on the visualizer window 121, shown in FIG. 17, thevisualizer 120 and the document view engine 200 may re-generate the dataflow 124 a on the visualizer window 121 and collapse the number ofprogram flow icons 126 that comprise the data flow 124, ultimatelyshowing the entire lineage of the data (i.e., where the data came from,how the data has been processed and where the data was stored). Thus,the visualizer 120 enables the user to view a representation of the flowof data during execution of selected code one step or program statementat a time. It should also be appreciated that the user may take a singledata flow 124 and reverse the step-wise function, thereby expanding thenumber of program flow icons 126 that comprise the data flow 124 andshowing the data flow 124 for individual sections or blocks of code.

It should also be appreciated that the integrated software application30 allows changes to the code to be made textually or visually, i.e., byusing the editor 80 or the visualizer 120, respectively. Editing,creating or developing new code visually using the visualizer isachieved by reverse engineering the exiting code or code templates,i.e., SAS®, SQL®, SPSS®, DB2 UDB®, Oracle® RDBMS and UNIX® Scripts, anddisplaying the code visually using icons. As the user manipulate theseicons visually, code will be generated. Any changes to the code via thevisual interface can be forward engineered to assume a textual formatcapable of being executed on the respective Data Development and DataManagement System. Therefore, the integrated software application 30 iscapable of producing a textual file that is derived from a visual modeland executing the derived textual file.

As shown in FIG. 19, the visualizer window 121 may also be configured todisplay a split view. When the visualizer window 121 is in split viewmode, the visualizer window 121 will be comprised of a flow panel 121 band an visualizer code panel 121 c. The flow panel 121 b will displayeither the program flow 122 or the data flow 124, and the visualizercode panel 121 c will display the code for program flow icons 126, whichare shown in the flow panel 121 b. Moreover, by clicking on an icon inthe program flow window or data flow window, the user can cause theeditor 80 window 100 to display the portion of the code that correspondsto the program flow icon 126 that was selected. This is especiallyhelpful in debugging the code.

For example, as shown in FIG. 20, when elements appear in red, thissignifies that the highlighted element contains an error in theunderlying code. If the user selects the highlighted element, a pop-upwindow may be displayed to the user depicting the code associated withthe highlighted element, along with the corresponding Error log, i.e.,the editor 80 will scroll to the corresponding section of code anddisplay the code to the user, while also displaying the Error log inclose proximity to the code. It should be appreciated by those withskill in the art that during the user session, the user may freelynavigate between the document manager 60, the editor 80 and thevisualizer 120, as needed, by selecting the corresponding icon in thenavigation bar 48.

It should also be understood that the user can visualize the executionlog. Visualizing the execution log will show the exact path of theprogram flow 122 and data flow 124. The program flow 122 and the dataflow 124 will be exact because they are based on the actual execution ofthe code. This in turns provides additional debugging and optimizationinformation, such as, the code section that will get executed, how muchdata is being processed, the execution time for the code, the externalfiles, library or macros that are referenced by the code, the format forthe fully instantiated macro, etc.

For parsing the code, the document manager 60 first determines the filetype for a selected file, i.e. the SAS®, SPSS®, SQL®, DB2 UDB®, Oracle®RDBMS etc. After the file type for a selected portion of code isdetermined, the parser layer 140 deploys the corresponding file parser142, e.g., a file parser 142 that corresponds to, in this case, one of avariety of data manipulation and/or data management programminglanguages. By deploying the appropriate file parser 142, the parserlayer 140 also activates the respective rules and logic that correspondto the detected programming language. Therefore, users are capable ofdeveloping, editing and maintaining code that can be executed by morethan one data manipulation and/or data management program.

As mentioned earlier, the parser layer 140 is capable of processingvarying file types, as the integrated software application 30 has beendesigned to be language aware. For example, as mentioned above, thedocument manager 60 recognizes file types and the integrated softwareapplication 30 includes enhanced, standalone productivity tools, suchas, generic text editors, the Windows File Manager and File Transferprograms 68. In addition, these productivity tools are also designed towork seamlessly with the integrated software application 30 byimplementing XML protocols, as is generally known in the art. Thus,although the preferred embodiment of the present invention is designedto interact with SAS® code, it should also be appreciated that thesystem will also be capable of parsing and interpreting other filetypes, such as, SPSS®, SQL®, DB2 UDB®, Oracle® RDBMS, etc.

As is generally known in the art, after the file parser 142 retrievescode from the document manager 60, the file parser 142 breaks the codedocument 146 into individual words/tokens 144. Based on the class of theindividual tokens 144, the file parser 142 identifies and tags thetokens 144. Tokens 144 can be tagged to indicate that they are one of avariety of classes, such as, a keyword token 144 a, a newline token 144b, a quotestring token 144 c, a macro token 144 d and a comment token144 e. By tagging the tokens 144, the parser layer 140 enables thedocument view engine 200 to recognize and display the program flow 122.As shown in FIG. 21, the document view engine 200 employs a predefinedclass structure for recognizing and displaying the tokens 144 providedby the file parser 142. An example of the class structure as it might beimplemented in a parsed document/file is shown in FIG. 22.

While specific embodiments of the present invention have been describedin detail, it will be appreciated by those skilled in the art thatvarious modifications and alternatives to those details could bedeveloped in light of the overall teachings of the disclosure. Forexample, the processes described with respect to computer executableinstructions can be performed in hardware or software without departingfrom the spirit of the invention. Furthermore, the order of all stepsdisclosed in the figures and discussed above has been provided forexemplary purposes only. Therefore, it should be understood by thoseskilled in the art that these steps may be rearranged and alteredwithout departing from the spirit of the present invention. In addition,it is to be understood that all patents discussed in this document areto be incorporated herein by reference in their entirety. Moreover,while the present invention may be described in terms of a particularprogramming language, it should also be understood that the presentinvention may be programmed in various other software languages.Accordingly, the particular arrangement disclosed is meant to beillustrative only and not limiting as to the scope of the inventionwhich is to be given the full breadth of the appended claims and anyequivalents thereof.

1. A computer readable media having computer executable instructions forexamining and editing software, the instructions performing stepscomprising: retrieving software comprised of source code that isprogrammed in one of a plurality of types of data manipulationprogramming languages; displaying the retrieved source code andproviding a means for a user to edit the displayed, retrieved sourcecode; detecting the one of the plurality of types of data manipulationlanguages in which the retrieved source code is programmed; activatingrules and logic applicable to the detected one of the plurality of typesof data manipulation languages to parse the source code and to create aflow representation of the source code; displaying the flowrepresentation of the source code and providing a means for the user toedit the displayed flow representation of the source code; and causingedits made to the displayed source code to be automatically reflected inthe displayed flow representation of the source code and causing editsmade to the displayed flow representation of the source code to beautomatically reflected in the displayed source code.
 2. The computerreadable media as recited in claim 1, wherein the flow representationdepicts data flow.
 3. The computer readable media as recited in claim 1,wherein the flow representation depicts program flow.
 4. The computerreadable media as recited in claim 1, wherein the instructions allow theuser to expand and collapse the flow representation.
 5. The computerreadable media as recited in claim 1, wherein the instructions allow theuser to search a network for the software to be retrieved.
 6. Thecomputer readable media as recited in claim 1, wherein the instructionsallow for retrieving of an error log file generated as a result of anexecution of the software and further function to parse the error logfile to determine segments of the software having an error and updatethe flow representations to indicate which segments are determined tohave an error.
 7. The computer readable media as recited in claim 6,wherein the instructions display debugging hints corresponding to theerrors determined to be within the software.
 8. The computer readablemedia as recited in claim 7, wherein the instructions allow forretrieving of the debugging hints by browsing a network.
 9. The computerreadable media as recited in claim 8, wherein the instructions allow forthe customization of the debugging hints.
 10. The computer readablemedia as recited in claim 8, wherein the instructions display aplurality of code templates to allow the user to select and insert oneor more of the code templates into the software.
 11. The computerreadable media as recited in claim 10, wherein the instructions allowfor browsing a network to retrieve the code templates for selection bythe user.
 12. The computer readable media as recited in claim 11,wherein the instructions display code within a code template in responseto a request by the user.
 13. The computer readable media as recited inclaim 11, wherein the instructions automatically correct segments of thesource code.
 14. The computer readable media as recited in claim 11,wherein the instructions automatically generate segments of the sourcecode.
 15. The computer readable media as recited in claim 1, wherein theflow representation comprises individual flow elements representative ofdesignated segments of the source code.
 16. The computer readable mediaas recited in claim 15, wherein the instructions display comments andexecution statistics associated with each flow element in response to amouse-over selection of the respective flow element.
 17. The computerreadable media as recited in claim 1, wherein the instructions display alist of data inspection functions in response to selection of a dataseticon.
 18. The computer readable media as recited in claim 1, wherein theinstructions display a list of data discovery functions in response toselection of a dataset icon.
 19. A computer readable media havinginstructions for examining software, the instructions performing stepscomprising: retrieving an execution log created from an actual executionof the software; creating a flow representation of the execution log;and displaying the flow representation of the execution log.
 20. Thecomputer readable media as recited in claim 19, wherein the flowrepresentation depicts data flow.
 21. The computer readable media asrecited in claim 19, wherein the flow representation depicts programflow.
 22. The computer readable media as recited in claim 19, whereinthe instructions provide for allowing a user to expand and collapse theflow representation.
 23. The computer readable media as recited in claim19, wherein the instructions allow for a user to search a network toretrieve the execution log of the software.
 24. The computer readablemedia as recited in claim 19, wherein the software is programmed in oneof a plurality of types of data manipulation languages.